package com.tanhua.server.service;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.tanhua.server.mapper.SoulOptionMapper;
import com.tanhua.server.mapper.SoulQuestionMapper;
import com.tanhua.server.mapper.SoulTestTableMapper;
import com.tanhua.server.pojo.SoulOption;
import com.tanhua.server.pojo.SoulQuestion;
import com.tanhua.server.pojo.SoulTestTable;
import com.tanhua.server.utils.UserThreadLocal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

@Service
public class TestSoulService {

    @Autowired
    private SoulOptionMapper optionMapper;

    @Autowired
    private SoulQuestionMapper questionMapper;

    @Autowired
    private SoulTestTableMapper tableMapper;

    @Autowired
    private MongoTemplate mongoTemplate;

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    public List<SoulTestTable> getTestSoulTable() {

        List<SoulTestTable> tableList = tableMapper.selectAll();

        for (SoulTestTable soulTestTable : tableList) {
            QueryWrapper<SoulQuestion> queryWrapperSoulQuestion = new QueryWrapper<>();
            queryWrapperSoulQuestion.eq("table_id",soulTestTable.getId());
            List<SoulQuestion> questionList = questionMapper.selectList(queryWrapperSoulQuestion);

            for (SoulQuestion soulQuestion : questionList) {
                QueryWrapper<SoulOption> queryWrapperSoulOption = new QueryWrapper<>();
                queryWrapperSoulOption.eq("question_id",soulQuestion.getId());
                List<SoulOption> optionList = optionMapper.selectList(queryWrapperSoulOption);

                soulQuestion.setOptions(optionList);
            }
            soulTestTable.setQuestion(questionList);
        }
        return tableList;
    }

    // TODO
    public String submitTestSoulTable(List<Integer> optionIds) {
        List<SoulOption> optionList = optionMapper.selectBatchIds(optionIds);

        int score = 0;
        for (SoulOption option : optionList) {
            score += option.getScore();
        }

        Integer report = 1;
//                猫头鹰：他们的共同特质为重计划、条理、细节精准
//                在行为上，表现出喜欢理性思考与分析、较重视制度、结构、规范。
//                他们注重执行游戏规则、循规蹈矩、巨细靡遗、重视品质、敬业负责。
        if (score >=21 && score <= 40){
            report = 2;
//                    白兔型：平易近人、敦厚可靠、避免冲突与不具批判性。在行为上，表现出不慌不忙、冷静自持的态度。
//                    他们注重稳定与中长程规划，现实生活中，常会反思自省并以和谐为中心，即使面对困境，亦能泰然自若，从容应付。
        }else if (score >=41 && score <= 55){
            report = 3;
//                    狐狸型 ：人际关系能力极强，擅长以口语表达感受而引起共鸣，很会激励并带动气氛。
//                    他们喜欢跟别人互动，重视群体的归属感，基本上是比较「人际导向」。
//                    由于他们富同理心并乐于分享，具有很好的亲和力，在服务业、销售业、传播业及公共关系等领域中，狐狸型的领导者都有很杰出的表现。
        }else if (score >=56){
            report = 4;
//                    狮子型：性格为充满自信、竞争心强、主动且企图心强烈，是个有决断力的领导者。
//                    一般而言，狮子型的人胸怀大志，勇于冒险，看问题能够直指核心，并对目标全力以赴。
//                    他们在领导风格及决策上，强调权威与果断，擅长危机处理，此种性格最适合开创性与改革性的工作。
        }

        String key = "REPORT_" + UserThreadLocal.get().getId();
        redisTemplate.opsForValue().set(key,report + "");
        return key;
    }
}
